package main

import (
	"fmt"
	"math"
)

// 209. 长度最小的子数组
func main() {
	fmt.Println(minSubArrayLen(4, []int{1, 4, 4}))

}

func minSubArrayLen(target int, nums []int) int {
	if len(nums) == 0 {
		return 0
	}

	i := 0
	j := 0
	minLen := math.MaxInt64
	sum := nums[0]
	for i <= j && j < len(nums) {
		if i == j && nums[i] >= target {
			return 1
		}
		if sum >= target {
			minLen = min(minLen, j-i+1)
			sum = sum - nums[i]
			i++
		} else if sum < target {
			if j < len(nums)-1 {
				j++
				sum = sum + nums[j]
			} else {
				break
			}
		}
	}
	if minLen == math.MaxInt64 {
		return 0
	}
	return minLen
}
